package br.gov.mi.corporativo.dominio.boundary.comum.pessoaendereco;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.boundary.comum.pessoaendereco.PessoaEnderecoEndPoint;
import br.gov.mi.corporativo.dominio.entidade.comum.PessoaEndereco;

@Path("enderecospessoas")
public class PessoaEnderecoRestAdapter extends SpringBeanAutowiringSupport {
	
	@Autowired
	private PessoaEnderecoEndPoint service;
	
	
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<PessoaEndereco> recuperarTodos(){
		return service.recuperarTodos();
	}
	
	@GET
	@Path("id/{idPessoaEndereco}")
	@Produces({MediaType.APPLICATION_JSON})
	public PessoaEndereco recuperarPorIdPessoaEndereco(@PathParam("idPessoaEndereco")Long idPessoaEndereco){
		return service.recuperarPorIdPessoaEndereco(idPessoaEndereco);
	}

	@GET
	@Path("municipio/{municipio}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorMunicipio(@PathParam("municipio")Long municipio){
		return service.recuperarPorMunicipio(municipio);
	}
	
	@GET
	@Path("uf/{uf}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorUf(@PathParam("uf")Long uf){
		return service.recuperarPorUf(uf);
	}
	
	@GET
	@Path("pais/{pais}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorPais(@PathParam("pais")Long pais){
		return service.recuperarPorPais(pais);
	}
	
	@GET
	@Path("pessoa/{pessoa}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorPessoa(@PathParam("pessoa")Long pessoa){
		return service.recuperarPorPessoa(pessoa);
	}
	
	@GET
	@Path("tipoendereco/{tipoEndereco}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorTipoEndereco(@PathParam("tipoEndereco")Long tipoEndereco){
		return service.recuperarPorTipoEndereco(tipoEndereco);
	}
	
	@GET
	@Path("logradouro/{dsLogradouro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorDsLogradouro(@PathParam("dsLogradouro")String dsLogradouro){
		return service.recuperarPorDsLogradouro(dsLogradouro);
	}
	
	@GET
	@Path("complemento/{dsComplemento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorDsComplemento(@PathParam("dsComplemento")String dsComplemento){
		return service.recuperarPorDsComplemento(dsComplemento);
	}
	
	@GET
	@Path("bairro/{nmBairro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorNmBairro(@PathParam("nmBairro")String nmBairro){
		return service.recuperarPorNmBairro(nmBairro);
	}
	
	@GET
	@Path("cep/{nrCep}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorNrCep(@PathParam("nrCep")String nrCep){
		return service.recuperarPorNrCep(nrCep);
	}
	
	@GET
	@Path("stcorrespondencia/{stCorrespondencia}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorStCorrespondencia(@PathParam("stCorrespondencia")String stCorrespondencia){
		return service.recuperarPorStCorrespondencia(stCorrespondencia);
	}
	
	@GET
	@Path("stregistro/{stRegistro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<PessoaEndereco> recuperarPorStRegistro(@PathParam("stRegistro")String stRegistro){
		return service.recuperarPorStRegistro(stRegistro);
	}
	
}
